package collection;

import org.junit.Test;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class IteratorTest {

    @Test
    public void test1() {
        Collection coll1 = new ArrayList();
        coll1.add(123); // 装箱
        coll1.add(456);

        // 第一种遍历方式
        // ArrayList内部类Itr实现了Iterator接口
        Iterator iterator = coll1.iterator();
        System.out.println(iterator.getClass());

        while (iterator.hasNext()) {
            iterator.next();
            Object o = iterator.next();
            System.out.println(o);
        }
    }

    @Test
    public void test2() {
        Collection coll1 = new ArrayList();
        coll1.add(123); // 装箱
        coll1.add(456);

        // 第二种遍历方式,通过调式，发现内部还是用的迭代器方式
        for (Object o : coll1) {
            System.out.println(o);
        }

        System.out.println("a");
    }

    @Test
    public void test3() {
        
        int[] nums = new int[3];
        // 赋值方式一：成功
        for (int i = 0; i < nums.length; i++) {
            nums[i] = i;
        }
        // 赋值方式二：失败,因为每次循环赋给了新的变量n
        for (int n :
                nums) {
            n = 10;
        }

        for (int i = 0; i < nums.length; i++) {
            System.out.println(nums[i]);
        }
    }
}
